import request from '@/utils/request';

// 修改API基础路径，确保与后端匹配
const API_BASE_PATHS = [
  '/api/dta/api/rfm',  // 原路径
  '/api/rfm',          // 新增正确路径(与后端匹配)
  '/api/dta/rfm'       // 备选路径
];

// 获取RFM分析概览数据
export function getRfmSummary() {
  console.log('调用RFM概览API');
  
  // 更新路径，使用第二个基础路径
  const url = `${API_BASE_PATHS[1]}/summary/`;
  console.log('使用API路径:', url);
  
  return request({
    url: url,
    method: 'get'
  }).then(response => {
    console.log('RFM概览API响应成功:', response);
    return response;
  }).catch(error => {
    console.error('RFM概览API请求失败:', error);
    throw error;
  });
}

// 获取RFM客户价值矩阵数据
export function getRfmMatrix() {
  console.log('调用RFM矩阵API');
  
  // 更新路径，使用第二个基础路径
  const url = `${API_BASE_PATHS[1]}/matrix/`;
  console.log('使用API路径:', url);
  
  return request({
    url: url,
    method: 'get'
  }).then(response => {
    console.log('RFM矩阵API响应成功:', response);
    return response;
  }).catch(error => {
    console.error('RFM矩阵API请求失败:', error);
    throw error;
  });
}

// 获取客户类型分布数据
export function getCustomerTypes() {
  console.log('调用客户类型分布API');
  
  // 更新路径，使用第二个基础路径
  const url = `${API_BASE_PATHS[1]}/customer-types/`;
  console.log('使用API路径:', url);
  
  return request({
    url: url,
    method: 'get'
  }).then(response => {
    console.log('客户类型分布API响应成功:', response);
    // 确保返回的是数组
    if (!response || !Array.isArray(response)) {
      console.warn('客户类型分布API返回的数据不是数组，返回空数组');
      return [];
    }
    return response;
  }).catch(error => {
    console.error('客户类型分布API请求失败:', error);
    // 返回空数组而不是抛出错误
    return [];
  });
}

// 获取RFM分析结果列表
export function getRfmAnalysisResults(params) {
  console.log('调用RFM分析结果API，参数:', params);
  
  // 更新路径，使用第二个基础路径
  const url = `${API_BASE_PATHS[1]}/analysis-results/`;
  console.log('使用API路径:', url);
  
  return request({
    url: url,
    method: 'get',
    params
  }).then(response => {
    console.log('RFM分析结果API响应成功:', response);
    // 确保返回的数据有正确的结构
    if (!response || !response.results) {
      console.warn('RFM分析结果API返回的数据结构不正确，返回默认结构');
      return {
        results: [],
        pagination: {
          total: 0,
          page: 1,
          page_size: 10,
          total_pages: 0
        }
      };
    }
    return response;
  }).catch(error => {
    console.error('RFM分析结果API请求失败:', error);
    // 返回默认结构而不是抛出错误
    return {
      results: [],
      pagination: {
        total: 0,
        page: 1,
        page_size: 10,
        total_pages: 0
      }
    };
  });
}

// 获取RFM趋势数据
export function getRfmTrends() {
  console.log('调用RFM趋势API');
  
  // 更新路径，使用第二个基础路径
  const url = `${API_BASE_PATHS[1]}/trends/`;
  console.log('使用API路径:', url);
  
  return request({
    url: url,
    method: 'get'
  }).then(response => {
    console.log('RFM趋势API响应成功:', response);
    // 确保返回的是数组
    if (!response || !Array.isArray(response)) {
      console.warn('RFM趋势API返回的数据不是数组，返回空数组');
      return [];
    }
    return response;
  }).catch(error => {
    console.error('RFM趋势API请求失败:', error);
    // 返回空数组而不是抛出错误
    return [];
  });
}

// 获取客户生命周期阶段分析数据
export function getCustomerLifecycle() {
  console.log('调用客户生命周期API');
  
  // 更新路径，使用第二个基础路径
  const url = `${API_BASE_PATHS[1]}/lifecycle/`;
  console.log('使用API路径:', url);
  
  return request({
    url: url,
    method: 'get'
  }).then(response => {
    console.log('客户生命周期API响应成功:', response);
    // 确保返回的是数组
    if (!response || !Array.isArray(response)) {
      console.warn('客户生命周期API返回的数据不是数组，返回空数组');
      return [];
    }
    return response;
  }).catch(error => {
    console.error('客户生命周期API请求失败:', error);
    // 返回空数组而不是抛出错误
    return [];
  });
}

// 获取消费金额分布数据
export function getMonetaryDistribution() {
  console.log('调用消费金额分布API');
  
  // 更新路径，使用第二个基础路径
  const url = `${API_BASE_PATHS[1]}/monetary-distribution/`;
  console.log('使用API路径:', url);
  
  return request({
    url: url,
    method: 'get'
  }).then(response => {
    console.log('消费金额分布API响应成功:', response);
    // 确保返回的是数组
    if (!response || !Array.isArray(response)) {
      console.warn('消费金额分布API返回的数据不是数组，返回空数组');
      return [];
    }
    return response;
  }).catch(error => {
    console.error('消费金额分布API请求失败:', error);
    // 返回空数组而不是抛出错误
    return [];
  });
} 